-
Notifications
You must be signed in to change notification settings - Fork 516
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OCPCLOUD-2010: Add CloudControllerManagerStatus to External platform status #1434
OCPCLOUD-2010: Add CloudControllerManagerStatus to External platform status #1434
Conversation
@adriengentil: This pull request references OCPCLOUD-2010 which is a valid jira issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Hello @adriengentil! Some important instructions when contributing to openshift/api: |
Skipping CI for Draft Pull Request. |
@adriengentil: This pull request references OCPCLOUD-2010 which is a valid jira issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Revert so not much to review here, but, do we have an implementation PR that can be reviewed alongside this API change? |
I'm currently implementing the other part in library-go, I'll link it here once I have a draft. |
…xternal This change enables the external platform when external platform type is set and when cloud controller manager mode is set to External. Since cloud controller manager mode is controlled from the `PlatformSpec` struct, I had to change the signature of `IsCloudProviderExternal` to take the `Infrastructure` struct in parameter. PR on API side: openshift/api#1434
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
@JoelSpeed ptal
…xternal This change enables the external platform when external platform type is set and when cloud controller manager mode is set to External. Since cloud controller manager mode is controlled from the `PlatformSpec` struct, I had to change the signature of `IsCloudProviderExternal` to take the `Infrastructure` struct in parameter. PR on API side: openshift/api#1434
config/v1/types_infrastructure.go
Outdated
// and no extra initialization from the cloud controller manager is expected. | ||
// +kubebuilder:validation:Enum="";External;None | ||
// +optional | ||
State CloudControllerManagerState `json:"state"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we allow this to be changed post install? Are there any transitions we would like to prevent, eg, should the External
not be allowed to transition back to None
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we have never discussed being able to transit back from CCMs to non-CCMs. given that this field is intended for deployments where there most likely won't be an in-tree provider, i don't think we will allow it to be changed after install.
i'm trying to think about what that would mean, and essentially it would be switching a cluster from using CCMs to using no cloud controllers. which sounds like it might work in theory, but i'm not sure about the transitive effects and if that is supportable for us.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well that's an interesting point, is it us supporting that change, or is it up to the people integrating into external?
Effectively this drives whether new nodes are tainted or not, so, transitioning away from it, isn't the worst thing in the world. But I don't know what the implications would be for things like load balancers if the CCM were suddenly removed.
We can add validation to say that it cannot be changed away from External
once it is set to external, but are we sure that's the right thing to do?
Another thing we can do, is add a copy of this to the status, and then have some control determine if the change is acceptable or not, and if it is, update the status, if it's not, it doesn't. Consumers would only read from the status.
That said, can we confidently say that there is a blanket policy that will be acceptable for all external platforms?
Should we be putting this only in the status to signal that it should only be configured at install time, or did we want to support upgrading and installing CCMs at a later point? (I think we did, want to check that)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Joel and i discussed this in our standup today, we have some questions about whether this field should be in the spec or status of the infra object. i'd like to get a few more opinions about how we intend this feature to be used, and if it is appropriate for users to change it after installation.
8b8e205
to
55ae87c
Compare
I updated the PR to:
If it looks fine to you, I'll update the enhancement and the Last question, do you have some pointers/hints to implement the reconciliation loop between both values? |
…xternal This change enables the external platform when external platform type is set and when cloud controller manager mode is set to External. PR on API side: openshift/api#1434
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for the patience @adriengentil , this is looking how i would expect now.
/lgtm
@JoelSpeed ptal
good question, i'll have to dig a little or maybe ask Joel at our standup today. |
i do see some the values updated in the installer, i'm guessing we will need to do this when adding support for external platform there, but i'm not sure if this is definitive. |
372de2e
to
db0028c
Compare
I updated the CEL as you suggested, thanks! |
/lgtm /hold, we have a scheduled meeting to discuss this, lets merge during the meeting assuming other pre-requisites are all in place |
…xternal This change enables the external platform when external platform type is set and when cloud controller manager mode is set to External. PR on API side: openshift/api#1434
…xternal This change enables the external platform when external platform type is set and when cloud controller manager mode is set to External. PR on API side: openshift/api#1434
Let CI run with api pointing to openshift/api#1434
…port Revendor openshift/api and openshift/library-go in order to support the external platform type. library-go PR: openshift/library-go#1496 API PR: openshift/api#1434
…port Revendor openshift/api and openshift/library-go in order to support the external platform type. library-go PR: openshift/library-go#1496 API PR: openshift/api#1434
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
/hold
@adriengentil feel free to remove the hold once openshift/cluster-config-operator#306 is passing the e2e-aws-ovn-techpreview test, or we can determine it is not failing due to this change.
@@ -83,6 +83,16 @@ var ( | |||
OwningProduct: ocpSpecific, | |||
} | |||
|
|||
FeatureGateExternalCloudProviderExternal = FeatureGateName("ExternalCloudProviderExternal") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agree that the stutter isn't great, but since it follows the others i think it can be acceptable
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: adriengentil, elmiko, JoelSpeed The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/unhold all tests passed in openshift/cluster-config-operator#306 |
@adriengentil: all tests passed! Full PR test history. Your PR dashboard. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
…xternal This change enables the external platform when external platform type is set, when cloud controller manager mode is set to External, and when the feature `FeatureGateExternalCloudProviderExternal` is enabled. PR on API side: openshift/api#1434
Re-vendor openshift/api in order to support the external platform. API PR: openshift/api#1434
…xternal This change enables the external platform when external platform type is set, when cloud controller manager mode is set to External, and when the feature `FeatureGateExternalCloudProviderExternal` is enabled. PR on API side: openshift/api#1434
…port Revendor openshift/api and openshift/library-go in order to support the external platform type. library-go PR: openshift/library-go#1496 API PR: openshift/api#1434
…port Revendor openshift/api and openshift/library-go in order to support the external platform type. library-go PR: openshift/library-go#1496 API PR: openshift/api#1434
…port Revendor openshift/api and openshift/library-go in order to support the external platform type. library-go PR: openshift/library-go#1496 API PR: openshift/api#1434
…port Revendor openshift/api and openshift/library-go in order to support the external platform type. library-go PR: openshift/library-go#1496 API PR: openshift/api#1434
Add the CloudControllerManagerStatus to the ExternalPlatformStatus struct.
The new field is added behind
TechPreviewNoUpgrade
feature set.This setting will be set at installation time.